git submodule
Gitリポジトリの中に別のGitリポジトリを埋め込む仕組み。特定のコミットを参照することで、依存関係のバージョン管理を厳密に行える。
基本的な使い方
# submoduleを追加
git submodule add https://github.com/org/repo.git path/to/submodule
# submoduleを初期化・更新
git submodule update --init --recursive
# submoduleを最新に更新
git submodule update --remote path/to/submodule
ナレッジベースでの活用
組織レベルのナレッジを各プロダクトに配信する方法として活用:
product-a/
├── .knowledge/
│ └── org/ # git submodule
└── docs/
各プロダクトは特定のコミットを参照することで、組織ナレッジのバージョンを固定できる。
利点
- バージョン管理が厳密: 各プロダクトが特定のコミットを参照
- ローカルで編集可能: submodule内で直接編集・テスト
- CI/CDと統合: 自動更新が可能
欠点
- 更新を忘れがち: 明示的に
git submodule updateが必要 - 学習コスト: チーム全員がsubmoduleに慣れる必要
npm packageとの比較
| 方式 | 用途 | メリット |
|---|---|---|
| git submodule | 変更頻度が高い場合 | バージョン管理が厳密、ローカル編集可能 |
| npm package | 安定している場合 | 標準ワークフロー、semver |